import {
  pgTable,
  boolean,
  foreignKey,
  text,
  bigint,
  index,
} from "drizzle-orm/pg-core";

import { collatePgColumn } from "../../../db/utils.js";
import { customerEntitlements } from "./cusEntTable.js";
import { createInsertSchema } from "drizzle-zod";

export const replaceables = pgTable(
  "replaceables",
  {
    id: text().primaryKey().notNull(),
    cus_ent_id: text().notNull(),
    created_at: bigint({ mode: "number" }).notNull(),
    from_entity_id: text(),
    delete_next_cycle: boolean("delete_next_cycle").notNull().default(false),
  },
  (table) => [
    foreignKey({
      columns: [table.cus_ent_id],
      foreignColumns: [customerEntitlements.id],
      name: "replaceables_cus_ent_id_fkey",
    }).onDelete("cascade"),
    index("idx_replaceables_cus_ent_id").on(table.cus_ent_id),
  ],
).enableRLS();

collatePgColumn(replaceables.id, "C");

export const InsertReplaceableSchema = createInsertSchema(replaceables);
export type Replaceable = typeof replaceables.$inferSelect;
export type InsertReplaceable = typeof replaceables.$inferInsert;
